$(document).ready(function () {

    // 当点击新增年级按钮时，显示新增年级模态框
    $('#gradeInsert').on('click', function () {
        $('#addGradeModal').modal('show');
    });
    document.getElementById('newGradeId').addEventListener('input', function () {
        var value = this.value;
        // 检查是否是正整数
        if (!/^\d+$/.test(value)) {
            // 如果不是正整数，清空输入框
            this.value = '';
        }
    });
    // 当点击确认按钮时，调用后端接口
    $('#confirmAddGrade').on('click', function () {
        var newGradeName = $('#newGradeName').val();
        var newGradeId = $('#newGradeId').val();

        if ($.trim(newGradeName) === '' || $.trim(newGradeId) === '') {
            alert('请填写所有项目！');
            return;
        }

        // 使用AJAX调用后端接口
        $.ajax({
            url: '/insertClasses', // 替换为实际的API地址
            type: 'POST',
            data: {classId: newGradeId, classesName: newGradeName},
            success: function (response) {
                if (response === true) {
                    // 插入成功后的处理
                    alert('年级添加成功！');
                    $('#addGradeModal').modal('hide'); // 关闭模态框
                    // 刷新年级列表等操作...
                } else {
                    alert('年级添加失败，请稍后重试！');
                }
            },
            error: function () {
                alert('请求失败，请检查网络连接或稍后再试！');
            }
        });
    });
});
$(document).ready(function () {
    function populateSelect(data) {
        var selectElement = $('#gradeSelect');

        // 清空已有的选项
        selectElement.empty().append('<option value="">请选择年级</option>');

        // 添加新的选项
        $.each(data, function (index, item) {
            selectElement.append($('<option>', {
                value: item.classId,
                text: item.className
            }));
        });
    }

    // AJAX调用后端接口
    $.ajax({
        url: "/selectClasses", // 替换为实际的API地址
        type: 'GET',
        dataType: 'json',
        success: function (data) {
            // 成功获取数据后填充下拉框
            populateSelect(data);
        },
        error: function () {
            // 请求失败时的处理
            alert('获取年级列表失败，请稍后再试。');
        }
    });
});

<!--重置积分-->

$(document).ready(function () {
    let resetCountdownHandler; // 存储倒计时处理器引用

    // 当按钮被点击时
    $('#resetPointsBtn').on('click', function () {
        // 显示模态框
        $('#confirmResetModal').modal('show');


        // 开始倒计时
        let countDown = 5;
        const countdownElement = $('#resetCountdown');
        resetCountdownHandler = setInterval(() => {
            countdownElement.text(countDown);
            if (countDown === 0) {
                clearInterval(resetCountdownHandler);
                // 只有在倒计时结束后才更改按钮状态
                countdownElement.text('确认').removeClass('countdown-btn').addClass('btn').off().on('click', function () {
                    // 获取用户的选择
                    let resetPointsOption = parseInt($('input[name="resetPointsOption"]:checked').val());
                    let url = resetPointsOption === 0 ? '/resetPointsZero' : '/resetPoints';
                    $.ajax({
                        url: url, // 根据用户的选择调用不同的API
                        type: 'POST',
                        success: function (response) {
                            // 根据后端响应处理结果
                            if (response === true) {
                                // 关闭模态框
                                $('#confirmResetModal').modal('hide');
                                // 成功消息
                                $("#customAlert").text("积分重置成功").show();
                                $('body').css('pointer-events', 'none');
                                setTimeout(function () {
                                    $("#customAlert").fadeOut('slow', function () {
                                        $('body').css('pointer-events', 'auto');
                                        window.location.reload();
                                    });
                                }, 1000);
                            } else {
                                // 失败消息
                                $("#customAlert").text("重置积分失败，请联系管理员").show();
                                // 其他失败的处理逻辑...
                            }
                        },
                        error: function (jqXHR, textStatus, errorThrown) {
                            console.error('发生错误: ' + textStatus + ' ' + errorThrown);
                        }
                    });
                });
            }
            countDown--;
        }, 1000);
    });
});

<!--重置科室密码-->
$(document).ready(function () {
    // 初始化管理科室模态框
    $('#manageDepartmentModal').on('show.bs.modal', function () {
        // 获取科室列表
        $.ajax({
            url: '/getDepartment', // 后端接口地址
            type: 'GET',
            success: function (departments) {
                const departmentListContainer = $('#departmentListContainer');
                departmentListContainer.empty();

                departments.forEach(department => {
                    const departmentItem = `
                        <div class="form-check">
                            <input class="form-check-input" type="radio" name="userId" value="${department.userId}" id="department-${department.userId}">
                            <label class="form-check-label" for="department-${department.userId}">
                                ${department.realName}
                            </label>
                        </div>
                    `;
                    departmentListContainer.append(departmentItem);
                });

                const resetButton = $('#confirmResetDepartmentPassword');
                const deleteButton = $('#confirmDeleteDepartment');
                $('input[name="userId"]').on('change', function () {
                    if ($(this).is(':checked')) {
                        resetButton.prop('disabled', false);
                        deleteButton.prop('disabled', false);
                    } else {
                        resetButton.prop('disabled', true);
                        deleteButton.prop('disabled', true);
                    }
                });
            },
            error: function () {
                alert('获取科室列表失败，请稍后再试。');
            }
        });
    });

    // 打开管理科室模态框
    $('#manageDepartment').on('click', function () {
        $('#manageDepartmentModal').modal('show');
    });

    // 确认删除科室
    $('#confirmDeleteDepartment').on('click', function () {
        const selectedDepartmentId = $('input[name="userId"]:checked').val();
        if (selectedDepartmentId) {
            if (confirm('您确定要删除选定的科室吗？')) {
                // 发送 AJAX 请求
                $.ajax({
                    url: '/deleteUser', // 后端接口地址
                    type: 'POST',
                    data: {id: selectedDepartmentId},
                    success: function () {
                        alert('删除成功！');
                        $('#manageDepartmentModal').modal('hide');
                    },
                    error: function () {
                        alert('发生错误，请稍后再试。');
                    }
                });
            }
        } else {
            alert("请选择科室")
        }
    });

    // 确认重置科室密码
    $('#confirmResetDepartmentPassword').on('click', function () {
        const selectedDepartmentId = $('input[name="userId"]:checked').val();
        if (selectedDepartmentId) {
            if (confirm('您确定要重置选定的科室密码吗？')) {
                // 发送 AJAX 请求
                $.ajax({
                    url: '/updateUserPassword', // 后端接口地址
                    type: 'POST',
                    data: {id: selectedDepartmentId},
                    success: function () {
                        alert('重置成功！');
                        $('#manageDepartmentModal').modal('hide');
                    },
                    error: function () {
                        alert('发生错误，请稍后再试。');
                    }
                });
            }
        } else {
            alert("请选择科室")
        }

    });
});

<!--修改密码-->
$(document).ready(function () {


    $('#changePasswordBtn').click(function () {
        // 显示模态框
        $('#changePasswordModal').modal('show');
    });
    $('#resetBtn').click(function () {
        $('#originalPassword').val('');
        $('#newPassword').val('');
        $('#confirmNewPassword').val('');
    });
    $('#logoutBtn').click(function () {
        $.ajax({
            url: '/logout', // 修改为你的后端接口地址
            type: 'POST',
            success: function (response) {
                // 显示自定义提示信息并设置2秒后自动消失
                if (response === true) {
                    $("#customAlert").text("请重新登录").show();
                    // 禁止页面点击
                    $('body').css('pointer-events', 'none');
                    setTimeout(function () {
                        // 3秒后提示消失，允许页面点击，并刷新页面
                        $("#customAlert").fadeOut('slow', function () {
                            $('body').css('pointer-events', 'auto');
                            window.location.href = ''; // 跳转到登录页面
                        });
                    }, 1000);
                }
            },
            error: function (jqXHR, textStatus, errorThrown) {
                alert('发生错误: ' + textStatus + ' ' + errorThrown);
            }
        });
    });
    $('#submitBtn').click(function () {
        var originalPassword = $('#originalPassword').val();
        var newPassword = $('#newPassword').val();
        var confirmNewPassword = $('#confirmNewPassword').val();

        if (!originalPassword || !newPassword || !confirmNewPassword) {
            alert("请确保所有字段都已填写")
            return false;
        }

        if (newPassword !== confirmNewPassword) {
            alert("新密码和确认密码不一致")
            return false;
        }
        $.ajax({
            url: '/updatePassword', // 修改为你的后端接口地址
            type: 'POST',
            data: {
                oldPassword: originalPassword,
                newPassword: newPassword
            },
            success: function (response) {
                // 显示自定义提示信息并设置2秒后自动消失
                if (response === true) {
                    $('#changePasswordModal').modal('hide');
                    $("#customAlert").text("密码更改成功，请重新登录").show();
                    // 禁止页面点击
                    $('body').css('pointer-events', 'none');
                    setTimeout(function () {
                        // 3秒后提示消失，允许页面点击，并刷新页面
                        $("#customAlert").fadeOut('slow', function () {
                            $('body').css('pointer-events', 'auto');
                            window.location.href = ''; // 跳转到登录页面
                        });
                    }, 2000);
                } else {
                    alert("请确认原密码是否正确")
                }
            },
            error: function (jqXHR, textStatus, errorThrown) {
                alert('发生错误: ' + textStatus + ' ' + errorThrown);
            }
        });
    });
});
<!--新增账号-->

$(document).ready(function () {
    // 当按钮被点击时
    $('#addAccountBtn').on('click', function () {
        // 显示模态框
        $('#addAccountModal').modal('show');
    });

    // 监听角色选择框的变化
    $('#accountRole').on('change', function () {
        var selectedRole = $(this).val();
        if (selectedRole === "2") { // 如果选择的是部门负责人
            $('#accountPointsDiv').hide(); // 隐藏积分输入框
            $('#gradeSelectDiv').hide(); // 隐藏年级选择框
        } else { // 如果选择的是老师
            $('#accountPointsDiv').show(); // 显示积分输入框
            $('#gradeSelectDiv').show(); // 显示年级选择框
        }
    });

    // 当手机号输入框值变化时
    $('#phone').on('input', function () {
        var phoneNumber = $(this).val();

        if (phoneNumber.trim() !== '') {
            // 使用 AJAX 发送 GET 请求检查手机号是否存在
            $.ajax({
                url: '/checkUserName',
                type: 'GET',
                data: {username: phoneNumber},
                success: function (data) {
                    if (data === 1) {
                        // 如果手机号已存在，则禁用确认按钮并显示提示
                        $('#confirmAddAccount').prop('disabled', true).text('该账号已存在');
                        // 移除之前的提示信息
                        $('#phone + .text-danger, #phone + .text-success').remove();
                        // 添加新的提示信息
                        $('#phone').after('<span class="text-danger">该账号已存在</span>');
                    } else {
                        // 如果手机号不存在，则启用确认按钮并显示提示
                        $('#confirmAddAccount').prop('disabled', false).text('确认');
                        // 移除之前的提示信息
                        $('#phone + .text-danger, #phone + .text-success').remove();
                        // 添加新的提示信息
                        $('#phone').after('<span class="text-success">可注册</span>');
                    }
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    // 如果请求发生错误，给出提示
                    $("#customAlert").text("请求失败，请稍后重试。").show();
                    setTimeout(function () {
                        // 2秒后提示消失
                        $("#customAlert").fadeOut('slow');
                    }, 1000);
                }
            });
        } else {
            // 如果手机号为空，则移除任何提示信息
            $('#phone + .text-danger, #phone + .text-success').remove();
            $('#confirmAddAccount').prop('disabled', false).text('确认');
        }
    });

    // 当确认按钮被点击时
    $('#confirmAddAccount').on('click', function () {
        // 获取表单数据
        const accountRole = $('#accountRole').val();
        const accountName = $('#accountName').val();
        const phone = $('#phone').val();
        var classId = $('#gradeSelect').val();
        if (accountRole === '2') {
            classId = 0;
            if (!accountRole || !accountName || !phone) {
                alert('请确保所有字段都已填写。');
                return;
            }
        } else {
            if (!accountRole || !accountName || !phone || !classId) {
                alert('请确保所有字段都已填写。');
                return;
            }
        }
        // 非空校验


        // 使用 AJAX 发送 POST 请求
        $.ajax({
            url: '/addUser',
            type: 'POST',
            data: {
                username: phone,
                role: accountRole,
                realName: accountName,
                letter: pinyin.getFullChars2(accountName),
                classId: classId
            },
            success: function (data) {
                if (data) {
                    // 成功添加用户后关闭模态框并给出成功提示
                    $('#addAccountModal').modal('hide');
                    $("#customAlert").text("添加成功").show();
                    // 禁止页面点击
                    $('body').css('pointer-events', 'none');
                    setTimeout(function () {
                        // 3秒后提示消失，允许页面点击，并刷新页面
                        $("#customAlert").fadeOut('slow', function () {
                            $('body').css('pointer-events', 'auto');
                            window.location.reload();
                        });
                    }, 1000);
                } else {
                    // 更新失败
                    $("#customAlert").text("用户添加失败，请检查输入信息").show();
                    setTimeout(function () {
                        // 2秒后提示消失
                        $("#customAlert").fadeOut('slow');
                    }, 1000);
                }
            },
            error: function (jqXHR, textStatus, errorThrown) {
                // 如果请求发生错误，给出提示
                $("#customAlert").text("请求失败，请稍后重试。").show();
                setTimeout(function () {
                    // 2秒后提示消失
                    $("#customAlert").fadeOut('slow');
                }, 1000);
            }
        });
    });
});

<!--修改标题-->

$(document).ready(function () {
    let id = null;
    // 当“修改标题”按钮被点击时
    $('#update').on('click', function () {
        id = 1;
        // 显示模态框
        $('#editTitleModal').modal('show');
    });
    // 当“修改标题”按钮被点击时
    $('#updateSmall').on('click', function () {
        id = 2;
        // 显示模态框
        $('#editTitleModal').modal('show');
    });
    // 当确认按钮被点击时
    $('#confirmEditTitle').on('click', function () {
        var newTitle = $('#newTitleInput').val();

        if (!newTitle) {
            // 如果标题为空，则显示警告信息
            $("#customAlert").text("标题不能为空").show();
            setTimeout(function () {
                // 2秒后提示消失
                $("#customAlert").fadeOut('slow');
            }, 2000);
            return;
        }
        // 调用后端接口来更新标题
        $.ajax({
            url: '/modifyTitle', // 修改为你的后端接口地址
            type: 'POST',
            data: {title: newTitle, id: id},
            success: function (response) {
                // 根据后端响应处理结果
                if (response === true) {
                    // 成功更新标题
                    // 可以在这里刷新页面或更新界面显示的新标题
                    // 关闭模态框
                    $('#editTitleModal').modal('hide');
                    $("#customAlert").text("标题更新成功，请重新登录").show();
                    // 禁止页面点击
                    $('body').css('pointer-events', 'none');
                    setTimeout(function () {
                        // 3秒后提示消失，允许页面点击，并刷新页面
                        $("#customAlert").fadeOut('slow', function () {
                            $('body').css('pointer-events', 'auto');
                            window.location.href = ''; // 跳转到登录页面
                        });
                    }, 2000);
                } else {
                    // 更新失败
                    $("#customAlert").text("更新标题失败，请检查输入").show();
                    setTimeout(function () {
                        // 2秒后提示消失
                        $("#customAlert").fadeOut('slow');
                    }, 2000);
                }
            },
            error: function (jqXHR, textStatus, errorThrown) {
                alert('发生错误: ' + textStatus + ' ' + errorThrown);
            }
        });

    });
});

<!--管理年级-->

$(document).ready(function () {
    // 初始化重置科室密码模态框
    $('#gradeManageModal').on('show.bs.modal', function () {
        // 获取科室列表
        $.ajax({
            url: '/selectClasses', // 后端接口地址
            type: 'GET',
            success: function (grades) {
                const gradeManageListContainer = $('#gradeListContainer');
                gradeManageListContainer.empty();

                grades.forEach(grade => {
                    const gradeItem = `
                            <div class="form-check">
                                <input class="form-check-input" type="radio" name="id" value="${grade.classId}" id="grade-${grade.classId}">
                                <label class="form-check-label" for="grade-${grade.classId}">
                                    ${grade.className} ：年级编号（ ${grade.classId} ）
                                </label>
                            </div>
                        `;
                    gradeManageListContainer.append(gradeItem);
                });

                const confirmButton = $('#deleteGradeConfirm');
                $('input[name="id"]').on('change', function () {
                    if ($(this).is(':checked')) {
                        confirmButton.prop('disabled', false);
                    } else {
                        confirmButton.prop('disabled', true);
                    }
                });
            },
            error: function () {
                alert('获取年级列表失败，请稍后再试。');
            }
        });
    });

    // 打开重置科室密码模态框
    $('#gradeManage').on('click', function () {
        $('#gradeManageModal').modal('show');
    });

    // 确认重置科室密码
    $('#deleteGradeConfirm').on('click', function () {
        const selectedDepartmentId = $('input[name="id"]:checked').val();
        if (selectedDepartmentId) {
            // 发送 AJAX 请求
            $.ajax({
                url: '/deleteClasses', // 后端接口地址
                type: 'POST',
                data: {id: selectedDepartmentId},
                success: function (result) {
                    if (result === true) {
                        alert('删除成功！');
                        $('#gradeManageModal').modal('hide');
                    } else {
                        alert('请检查是否有老师还属于该年级后重试。');
                    }
                },
                error: function () {
                    alert('删除失败，请联系管理员。');
                }
            });
        }
    });
});
//导入名单
$(document).ready(function () {
    // 导入名单提示框
    $('#importListBtn').on('click', function () {
        $('#importListConfirmModal').modal('show');
    });

    // 已有模板按钮点击事件
    $('#haveTemplate').on('click', function () {
        $('#importListConfirmModal').modal('hide');
        $('#uploadFileModal').modal('show');
    });

    // 无模板按钮点击事件
    $('#noTemplate').on('click', function () {
        $('#importListConfirmModal').modal('hide');
        // 下载模板
        window.location.href = '/downloadTemplate';
    });

    var fileInput = document.getElementById('fileInput');
    var uploadButton = document.getElementById('uploadFile');

    fileInput.addEventListener('change', function (event) {
        var files = event.target.files;
        if (files.length === 0) {
            uploadButton.disabled = true;
            return;
        }

        var file = files[0];
        if (!file.name.match(/\.(xlsx)$/i)) {
            alert('请选择 .xlsx 文件！');
            fileInput.value = ''; // 清空输入框
            uploadButton.disabled = true;
            return;
        }

        uploadButton.disabled = false;
    });

    uploadButton.addEventListener('click', function (event) {
        if (uploadButton.disabled) {
            event.preventDefault(); // 阻止默认行为
            return;
        }

        // 显示加载蒙版层
        $('#loadingMask').show();

        var formData = new FormData();
        formData.append('file', fileInput.files[0]);

        $.ajax({
            url: '/upload',
            type: 'POST',
            data: formData,
            processData: false,
            contentType: false,
            success: function (response) {
                console.log(response);
                // 隐藏加载蒙版层
                $('#loadingMask').hide();
                // 关闭模态框
                $('#uploadFileModal').modal('hide');
                alert('导入成功！');
            },
            error: function (error) {
                console.error(error);
                alert('文件上传失败，请检查文件格式是否正确！');
                // 隐藏加载蒙版层
                $('#loadingMask').hide();
            }
        });
    });
});
$(document).ready(function () {
    $('#viewLogsBtn').click(function () {
        $.ajax({
            url: '/getLogs',
            type: 'GET',
            success: function (logs) {
                displayLogDetails(logs);
                initializeDataTable();
            },
            error: function (error) {
                console.error('Failed to fetch logs:', error);
            }
        });
    });

    function displayLogDetails(logs) {
        // 清空表格内容
        $('#logTable tbody').empty();

        logs.forEach(function (log) {
            var newRow = $('<tr>', {
                html: [
                    '<td>' + log.description + '</td>',
                    '<td>' + log.operator + '</td>',
                    '<td>' + formatDate(log.operation_time) + '</td>',
                    '<td>' + (log.success ? '成功' : '失败') + '</td>',
                    '<td>' + (log.failure_reason || '') + '</td>'
                ].join('')
            }).appendTo('#logTable tbody');
        });

        $('#logDetailsModal').modal('show');
    }

    function formatDate(date) {
        var d = new Date(date);
        var month = '' + (d.getMonth() + 1);
        var day = '' + d.getDate();
        var year = d.getFullYear();
        var hour = '' + d.getHours();
        var minute = '' + d.getMinutes();
        var second = '' + d.getSeconds();

        if (month.length < 2) month = '0' + month;
        if (day.length < 2) day = '0' + day;
        if (hour.length < 2) hour = '0' + hour;
        if (minute.length < 2) minute = '0' + minute;
        if (second.length < 2) second = '0' + second;

        return [year, month, day].join('-') + ' ' + [hour, minute, second].join(':');
    }

    function initializeDataTable() {
        if ($.fn.DataTable.isDataTable('#logTable')) {
            $('#logTable').DataTable().destroy();
        }
        $('#logTable').DataTable({
            "paging": true,          // 分页
            "lengthChange": true,    // 每页显示记录数菜单
            "searching": true,       // 搜索
            "ordering": true,        // 排序
            "info": true,            // 显示表格信息
            "autoWidth": true,       // 自动列宽
            "language": {
                "url": "/assets/Chinese.txt"
            },
        });
    }
});